diff --git a/django/db/models/fields/related_descriptors.py b/django/db/models/fields/related_descriptors.py
index f62a9170c0..eaa6578bdb 100644
--- a/django/db/models/fields/related_descriptors.py
+++ b/django/db/models/fields/related_descriptors.py
@@ -180,12 +180,16 @@ class ForwardManyToOneDescriptor:
         if instance is None:
             return self
 
-        # The related instance is loaded from the database and then cached
-        # by the field on the model instance state. It can also be pre-cached
-        # by the reverse accessor (ReverseOneToOneDescriptor).
+        # Before get_cached_value call
+        print("DEBUG: Pre-get_cached_value call - instance:", instance)
+        print("DEBUG: Pre-get_cached_value call - fields_cache:", instance._state.fields_cache)
+
         try:
             rel_obj = self.field.get_cached_value(instance)
         except KeyError:
+            # Inside KeyError exception handling
+            print("DEBUG: KeyError caught - instance:", instance)
+            print("DEBUG: KeyError caught - fields_cache:", instance._state.fields_cache)
             has_value = None not in self.field.get_local_related_value(instance)
             ancestor_link = (
                 instance._meta.get_ancestor_link(self.field.model)
@@ -210,6 +214,9 @@ class ForwardManyToOneDescriptor:
                 if not remote_field.multiple:
                     remote_field.set_cached_value(rel_obj, instance)
             self.field.set_cached_value(instance, rel_obj)
+            # After potential get_object call and caching
+            print("DEBUG: Post-get_object call - rel_obj:", rel_obj)
+            print("DEBUG: Post-get_object call - fields_cache:", instance._state.fields_cache)
 
         if rel_obj is None and not self.field.null:
             raise self.RelatedObjectDoesNotExist(
